User interfaces are an integral part of computer software. In fact, the quality of software is often reflected by the quality of its user interface. So, software developers pay careful attention to designing a user interface that arranges elements for easy, logical invocation of the software's functionality. The software is then shipped to the customer for use.
However, despite the great attention paid to developing the best possible user interface, a customer almost inevitably finds that the user interface does not quite fit the customer's needs. For example, although the user interface is easy to use, it may be too permissive in that it allows users to access more functionality than the customer wishes. Such can be the case when a system administrator determines that a feature should not be available to most users or perhaps not available at all.
In other cases, the customer may wish to extend the functionality of the software by adding additional modules or plugins. Such modules or plugins may require additional user interface elements for interaction with the user. However, the customer may not be able to reprogram the user interface or may not wish to become involved in redesigning the user interface to accommodate new features.
Accordingly, some software allows customization of user interfaces by addition of buttons or menu items. However, typical approaches are static in nature and often fall short of customer needs. There still exists a need for improved techniques for managing, designing, creating, generating, and presenting user interfaces for software.